#include <stdio.h>
#define MaxSize 100
typedef int DataType;
typedef struct
{DataType list[MaxSize];
    int size;
    }SeqList;

    void ListInitiate(SeqList *L)
    {
            L->size = 0;
    }

    int ListLength(SeqList L){
            return L.size;
    }
    int ListInsert(SeqList *L,int i,DataType x)
    {
            int j;
                if (L->size>=MaxSize)
                    {
                                printf("顺序表已满无法插入！\n");
                                        return 0;
                    }
                        else if(i<0||i>L->size)
                            {
                                        printf("参数i不合法！\n");
                                                return 0;
                            }
                                else{
                                            for(j = L->size;j>i;j--)
                                                        L->list[j]=L->list[j-1];
                                                                L->list[i] = x;
                                                                        L->size++;
                                                                                return 1;
                                }
    }

    int ListDelete(SeqList *L,int i,DataType *x)
    {
            int j;
                if(L->size<=0)
                    {
                                printf("顺序表已空无数据元素可删！\n");
                                        return 0;
                    }
                        else if(i<0||i >L->size-1)
                            {
                                        printf("参数i不合法");
                                                return 0;
                            }
                                else {
                                            *x =L->list[i];
                                                    for ( j = i+1; j <= L->size-1; j++)
                                                                L->list[j-1] =L->list[j];
                                                                        L->size--;
                                                                                return 1;
                                }
    }

    int ListGet(SeqList L,int i,DataType *x)
    {
            if(i<0||i>L.size-1)
                {
                            printf("参数不合法！\n");
                                    return 0;
                } else{
                            *x =L.list[i];
                                    return 1;
                }
    }

    int ListSearch(SeqList L,DataType x){
            int j = -1;
                for (int i = 0; i <L.size ; i++) {
                            if(L.list[i] == x)j=i;
                }
                    return j;

    }
    int main( int argc,char * argv[])
    { SeqList  myList;
        int i,x;
            ListInitiate(&myList);
                for (i = 0; i < 10; i++){
                            ListInsert(&myList,i,i+1);
                }
                        ListDelete(&myList,5,&x);
                            for (i = 0;i  < ListLength(myList); i++) {
                                        ListGet(myList,i,&x);
                                                printf("%d",x);
                            }
                                printf("\t%d",ListSearch(myList,9));
                                    printf("\t%d",ListSearch(myList,11));

                                        return 0;
    }